package com.jmu.edu.IMApplication.utils;

import android.util.Log;

import com.jmu.edu.IMApplication.MyApplication;
import com.jmu.edu.IMApplication.bean.Match;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import cn.jpush.im.android.api.model.UserInfo;
import jackmego.com.jieba_android.JiebaSegmenter;

public class JiebaUtils {

    /**
     * 分词功能
     *
     * @param query
     * @return
     */
    public static ArrayList<String> getDividedString(String query) {
        return JiebaSegmenter.getJiebaSegmenterSingleton().getDividedString(query);
    }

    /**
     * 获取聊天记录的重复值
     *
     * @param query
     * @return
     */
    public static double getDuplicateMatch(String query,int size) {
        ArrayList<String> arrayList = getDividedString(query);
        Map<String, Integer> hashMap = new HashMap<>();
        int count = 0;
        for (String item : arrayList) {
            if (item.length() <= 1) {
                continue;
            }
            if (hashMap.containsKey(item)) {
                hashMap.put(item, hashMap.get(item) + 1);
            } else {
                hashMap.put(item, 1);
            }
        }
        Log.i("map", hashMap.toString());
        for (Map.Entry<String, Integer> entry : hashMap.entrySet()) {
            int value = entry.getValue();
            if (value >= 2) {
                count++;
            }
        }
        Double r = 1.0*count / size;
        return r;
    }

    /**
     * 获取匹配度
     * pram query:聊天记录
     *
     * @return Match
     */
    public static Match getMatch(String query) {
        double duplicate=getDuplicateMatch(query,12);
        UserInfo user = MyApplication.getUser();
        ArrayList<String> matchList = new ArrayList<>();
        ///这边暂时是写死的，等待后端写好的方法
        ArrayList<String> myHobbies = new ArrayList<>();
        ArrayList<String> otherHobbies = new ArrayList<>();
        myHobbies.add("唱歌");
        myHobbies.add("羽毛球");
        myHobbies.add("篮球");
        myHobbies.add("跳舞");
        otherHobbies.add("唱歌");
        otherHobbies.add("篮球");
        otherHobbies.add("羽毛球");
        ///
        double matching = 0;
        double matchCount = 0;
        double totalCount = myHobbies.size();
        for (String item : myHobbies) {
            if (otherHobbies.contains(item)) {
                matchCount++;
                matchList.add(item);
            }
        }

        matching = matchCount / totalCount * 0.6 + duplicate * 0.4;
        Match match = new Match(matchList,user.getUserName(), matching);
        return match;
    }


    public static List<Match> getMatchList(int size) {
        // 向数据库请求随机获得size个用户User以及它们对应的聊天记录record以及爱好列表hobby、生活习惯列表habit、讨厌的生活习惯列表hatedHabit
        // 向数据库请求获取自己的聊天记录以及爱好列表hobby、生活习惯列表habit、讨厌的生活习惯列表hatedHabit
        // for循环依次进行匹配，将匹配结果Match写入数据库中(Match数据表-userid,friendid,matching)，同时存入MatchList等待返回
        // 处理完毕，返回MatchList
        List<Match> matches = new ArrayList<>();
        String query1 = "你们有年级群吗\n" +
                "有的话可以发发\n" +
                "哈哈哈哈\n" +
                "我们班的\n" +
                "她捡的\n" +
                "叫你那个同学加她吧\n" +
                "我要继续背书了\n" +
                "胡图图都有了\n" +
                "那小怪呢\n" +
                "要不要来翻斗花园跟小怪玩\n" +
                "翻斗花园二号楼一零零一室\n"  +
                "哈哈哈哈\n" ;
        String query2 = "在哪里看下学期课表\n" +
                "下学期课表还没出\n" +
                "还没出\n" +
                "出了的话教务处系统可以看\n" +
                "那公选课看什么调\n" +
                "选晚上的一般不会撞\n" +
                "有没有软件19的同学呀，我想问一下明天计算机组成原理是几点考呀\n" +
                "晚上七点考试\n" +
                "麻烦把这个发你们群里，这位同学的校园卡丢了，找截图的同学领\n" +
                "已联系  谢谢朋友们\n" +
                "有无考发展与教育心理学的朋友，要不要一起对一下老师画的重点，结合一下可能就是考试内容了\n" +
                "有没有英语三级的\n" ;
        String query3 ="我爱吃苹果\n" +
                "我也爱吃苹果\n" +
                "我喜欢打篮球\n" +
                "我也喜欢打篮球\n" +
                "你学过java吗\n" +
                "我学过java\n" +
                "我对安卓挺感兴趣的\n" +
                "我也对安卓感兴趣\n" +
                "我爱吃薯片\n" +
                "我也爱吃薯片\n" +
                "我平时爱看电影\n" +
                "我也爱看电影\n" +
                "为什么你一直学我说话\n" +
                "为什么你一直学我说话";
        Match match1 = getMatch(query1);
        Match match2 = getMatch(query2);
        Match match3 = getMatch(query3);
        match1.setUserName("damao1");
        match2.setUserName("damao2");
        match3.setUserName("hhb1");
        matches.add(match3);
        matches.add(match2);
        matches.add(match1);
        Log.e("match1", match1.toString());
        Log.e("match2", match2.toString());
        Log.e("match3", match3.toString());
        return matches;
    }
}
